from flask import jsonify, request, Blueprint
import dashscope
import random
from http import HTTPStatus

dashscope.api_key = ""

main = Blueprint("main", __name__)


@main.route('/v1/extract', methods=['POST'])
def extract():
    # 心率，单位：bpm
    heart_rate = request.json.get('heart_rate')
    # 摇动次数
    shake_count = request.json.get('shake_count')
    # 压力值
    stress = request.json.get('stress')
    params = {
        'heart_rate': heart_rate,
        'stress': stress,
        'shake_count': shake_count
    }
    prompt_content = prompt(params)
    messages = [
        {'role': 'user', 'content': prompt_content}
    ]
    response = dashscope.Generation.call(
        model='qwen1.5-72b-chat',
        messages=messages,
        seed=random.randint(1, 10000),
        result_format='message',
    )
    if response.status_code == HTTPStatus.OK:
        data = response.output.choices[0].message.content
        print(data)
        data = format_data(data)
        return jsonify({
            'status': 200,
            'msg': 'ok',
            'data': data
        })
    else:
        return jsonify({
            'status': 500,
            'msg': response.message,
            'data': {}
        })


def prompt(params):
    prompt_text = """
    你是一个心理咨询师，拥有提供感情支持、解决心理困扰以及给出相应策略的能力。你需要通过我手腕转动{}次，以及运动健康参数：心率{}、压力{}，发挥你的能力为我提供积极向上的福袋寄语，并为该寄语设计一个简短的标题。
    标题最好是一个4字成语，包含福字。
    回答格式：
    福如东海\n福袋寄语：归程杳杳定无疑，石中藏玉有谁知，一朝良匠分明剖，始觉安然碧玉期
    """.format( params['shake_count'],params['heart_rate'], params['stress'])
    return prompt_text


def format_data(data):
    arr = data.split('\n\n')
    if len(arr) >= 1:
        return {
            'luck': arr[0],
            'explain': arr[1].replace('福袋寄语：', '', 1)
        }
    else:
        return {
            'luck': '福如东海',
            'explain': '好运降至，未来的日子将会平安喜乐。保持积极心态，一切都会慢慢变好。'
        }
